Storage networking is the practice of connecting storage devices to computing devices (e.g., clients, servers, and the like) by using networks (e.g., Fibre Channel) instead of traditional point-to-point small computer system interface (SCSI) channels. A network used to connect servers to storage devices is referred to as a storage area network (SAN). Within a SAN environment, computing devices have access to the available storage devices. This presents a wide variety of benefits, including server platform fail-over wherein a failed storage device and failed server are automatically recovered by another operational server platform and operational storage device without requiring any recabling of the operational storage devices.
Prior to the development of SAN technology, local and wide area networks provided access between computing devices that did not always include storage devices. Connections were established with network protocols such as Transmission Communication Protocol (TCP), Unreliable Datagram Protocol (UDP), and others. These protocols ensure that message ordering is preserved and that messages are not lost. Distributed File Systems (DFS) such as network file system (NFS) and Common Internet file system (CIFS) are layered on top of network protocols. Distributed File Systems provide uniformed named access to files and their associated data storage devices across a network consisting of heterogeneous computing devices. The computing devices are typically organized as clients and servers, in a client-server architecture. Using DFS, access to files or data storage devices (e.g., storage resources) is transparent to the computing device. Thus, access is consistent across the DFS without the need for physical locations or other details associated with any particular file or data.
Client and/or server transparent access to storage resources entails interposing a storage management software application between the storage resources and the clients and/or servers, such that virtualization of the storage environment and storage resources can be made available to the clients and servers within the shared storage environment. For example, a Volume Manager (VM) application can intercept client or server application requests to access and perform operations against a storage resource within the shared storage environment, where the VM translates the request into lower levels of abstraction that are necessary to satisfy the requests on the storage resource. Moreover, when the requests are satisfied, results associated with processing the requests can be translated into higher levels of abstraction and communicated back to the client or server. The process of translating storage requests from high levels of abstraction to lower levels of abstraction can be referred to as virtualization.
Virtualization permits storage resources to be more effectively managed and controlled in a shared storage environment, where multiple clients and/or servers simultaneously access the storage resources of the shared storage environment. In this way, the details of the underlying storage environment are hidden from or transparent to the client and/or server applications accessing the storage resources. Thus, the storage resources are more beneficially controlled and managed for improved performance and throughput by the storage management applications that are interposed between the client and/or server applications and the storage resources.
Yet, providing a single storage management application to the clients and servers creates awkward implementations of the storage management application because the storage management application must be capable of interfacing with a variety of vendor provided interfaces associated with disparate storage resources that may comprise the shared storage environment. Consequently, managing a shared storage environment on a client or server can require a variety of storage management applications, rather than a single, unifying storage management application where each of the storage management applications can be capable of performing similar storage management operations. Conventionally, in shared storage environments where multiple storage management applications exist, the individual storage management applications do not effectively communicate with one another, resulting in excessive administrative overhead and insufficient application coverage of the storage environment.
Moreover, in order to effectively utilize multiple storage management applications in a shared storage environment on behalf of clients and/or servers, the interactions between the individual storage management applications should be transparent to the clients and/or servers that are accessing storage resources in the shared storage environment. Furthermore, each individual storage management application needs to effectively communicate data among themselves, such that the overall management and control of the shared storage environment is not eroded or degraded.
Typically, storage management applications are integrated into the shared storage environment by developing interfaces for each of the storage resources within the shared storage environment. Thus, each of the storage management applications is capable of directly interfacing with the storage resources. Yet, each of the developed interfaces is customized for each of the storage management applications. Therefore, an abundance of redundant interfaces is created. Accordingly, it is would be more desirable to rely on a single storage management application having existing, developed interfaces to some of the storage resources. This will facilitate the development and integration of new storage management applications, without being required to define new storage resource interfaces for the new storage management applications.
Therefore, what is needed are methods and systems for bridging the interfaces provided by storage management applications to interfaces of other, new or existing storage management applications. As one of ordinary skill in the art will understand upon reading the present disclosure, this will improve storage resource management within the shared storage environment and will reduce the overall software coding complexity of the individual storage management application processing within the shared storage environment. Furthermore, new storage management applications can more easily be integrated and become operational within the shared storage environment.